package com.vhall.component.entity.lottery.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @author pingwen.jiang
 */
@Data
public class LotteryVO implements Serializable {

    private static final long serialVersionUID = -350503488984955293L;

    /**
     * 抽奖ID（主键）
     */
    @ParamName("id")
    @JsonProperty("id")
    private Long id;


    /**
     * 创建者ID
     */
    @ParamName("creator_id")
    @JsonProperty("creator_id")
    private String creatorId;

    /**
     * 来源ID
     */
    @ParamName("source_id")
    @JsonProperty("source_id")
    private String sourceId;

    /**
     * 抽奖图
     */
    private String icon;

    /**
     * 创建者昵称
     */
    @ParamName("creator_nickname")
    @JsonProperty("creator_nickname")
    private String creatorNickname;

    /**
     * 创建者头像
     */
    @ParamName("creator_avatar")
    @JsonProperty("creator_avatar")
    private String creatorAvatar;

    /**
     * 抽奖标题（奖品内容）
     */
    @JsonProperty("title")
    private String title;

    /**
     * 抽奖方式 1：随机抽奖 2: 满足条件抽奖
     */
    @ParamName("lottery_rule")
    @JsonProperty("lottery_rule")
    private Integer lotteryRule;

    /**
     * 参与抽奖人员范围：
     */
    @ParamName("lottery_type")
    @JsonProperty("lottery_type")
    private Integer lotteryType;

    /**
     * 中奖人数
     */
    @ParamName("lottery_number")
    @JsonProperty("lottery_number")
    private Integer lotteryNumber;

    /**
     * 参与人数
     */
    @ParamName("join_number")
    @JsonProperty("join_number")
    private Integer joinNumber;

    /**
     * 实际中奖人数
     */
    @ParamName("actual_lottery_number")
    @JsonProperty("actual_lottery_number")
    private Integer actualLotteryNumber;

    /**
     * 抽奖状态：0 开始抽奖 1 抽奖完成（结束）
     */
    @ParamName("lottery_status")
    @JsonProperty("lottery_status")
    private Integer lotteryStatus;


    /**
     * 抽奖开始时间
     */
    @ParamName("begin_time")
    @JsonProperty("begin_time")
    private Date beginTime;

    /**
     * 是否允许重复中奖  0-允许， 1-不允许（默认）
     */
    @ParamName("repeat_lottery")
    @JsonProperty("repeat_lottery")
    private Integer repeatLottery;

    /**
     * 邀请人数
     */
    @ParamName("invite_number")
    @JsonProperty("invite_number")
    private Integer inviteNumber;

    /**
     * 邮箱
     */
    @ParamName("mail")
    @JsonProperty("mail")
    private String mail;

    /**
     * 是否已删除 0 表示未删除 1 表示已删除
     */
    private Integer deleted;

    /**
     * 创建时间
     */
    @ParamName("created_at")
    @JsonProperty("created_at")
    private Date createdAt;

    /**
     * 删除时间
     */
    @ParamName("deleted_at")
    @JsonProperty("deleted_at")
    private Date deletedAt;

    /**
     * 更新时间
     */
    @ParamName("updated_at")
    @JsonProperty("updated_at")
    private Date updatedAt;

    /**
     * 奖品快照
     */
    @ParamName("award_snapshoot")
    @JsonProperty("award_snapshoot")
    private AwardVO awardSnapshoot;

    /**
     * 扩展字段
     */
    private String extension;

    /**
     * 距抽奖开始剩余秒数
     */
    @ParamName("left_seconds")
    @JsonProperty("left_seconds")
    private Integer leftSeconds;

    /**
     * 需要填写领奖信息 0-否（默认），1-是
     */
    @JsonProperty("need_take_award")
    private Integer needTakeAward;


    /**
     * 奖品类型 1:实物奖品
     */
    @JsonProperty("lottery_prize_type")
    private Integer lotteryPrizeType;

}
